package pr1.gui;

import java.io.FileInputStream;
import java.util.ArrayList;

import pr1.bdd.Genero;
import pr1.bdd.Serie;
import pr1.bdd.Usuario;
import programa.Programa;

public class GUIController {
	private Programa programa;
	private Login login;
	private MainWindow main;
	private Admin admin;
	private Usuario usuario;



	public GUIController(Programa programa) {
		this.programa = programa;
		this.login = new Login(this);
	}
	
	protected Usuario getUsuario() {
		return usuario;
	}

	public boolean login(String usu, String pass) {
		usuario = programa.login(usu, pass);
		if (usuario != null) {
			this.login.setVisible(false);
			if (usu.equals("admin")) {
				admin = new Admin(this);
			} else {
				this.main = new MainWindow(this);
				main.cargar(usuario);
			}
			return true;
		}

		else
			return false;

	}

	public boolean nuevoUsuario(String usu, String pass) {
		Usuario usuario = programa.nuevoUsuario(usu, pass);
		if (usuario != null) {
			this.login.setVisible(false);
			if (usu.equals("admin")) {
				admin = new Admin(this);
			} else {
				this.main = new MainWindow(this);
				main.cargar(usuario);
			}
			return true;
		}
		return false;
	}

	public Serie creaSerie(String nombre, String titular, String sinopsis,
			int estreno, int fin) {
			return programa.creaSerie(nombre, titular, sinopsis, estreno,
				fin);
			

	}
	
	public ArrayList<Serie> cargarBusqueda(String busqueda){
		return programa.busquedaSeries(busqueda);
		
	}
	
	public boolean insertarGeneros(ArrayList<Genero> generos){
		return programa.insertarGeneros(generos);
	}
	
	public boolean eliminarGenero(Genero genero){
		return programa.eliminarGenero(genero);
	}
	
	public Serie busquedaSerieIndividual(String string){
		return programa.busquedaSerieIndividual(string);
	}
	
	public void alertaNoCreado(){
		admin.noCreado();
	}
	
	public boolean sigueSerie(Serie serie){
		return programa.sigueSerie(serie);
	}
	
	public ArrayList<Serie> seriesQueSigue(){
		return programa.seriesQueSigue();
	}
	
	public boolean dejaSeguirSerie(Serie serie){
		return programa.dejaSeguirSerie(serie);
	}
	
	public void actualizarComboSeries(){
		this.main.actualizarCombo();
	}
	
	public boolean editarSerie(Serie serie, String nombreViejo){
		return programa.editarSerie(serie, nombreViejo);
	}
	
	public boolean editarUsuario(Usuario u, FileInputStream fis, String nombreViejo,String fecha){
		return programa.editarUsuario(u, fis, nombreViejo, fecha);
	}
	
	public void cargarUsuario(Usuario u){
		main.cargar(u);
	}

}
